// 此处主要对数据库进行增删改查的操作
// 导入db模块
const db = require('../config/db');

// 处理Message的数据
class Message {
    // 查询所有数据
    list(){
        return new Promise((resolve, reject)=> {
            // 查询db_message这个表格的所有字段
            // let sql = `select * from db_message`;
            let sql = `select title from db_message`;
            // 参数： sql语句 
            db.query(sql).then( 
                rows=> {
                    //执行此处代码，表示获取了表格的数据
                    resolve(rows)
                },
                err=> {
                    //执行此处代码，表示获取数据失败
                    reject(err)
                }
            )
        })
    }

    // 条件查询
    items(id,author){
        return new Promise((resolve, reject)=> {
            // 查询db_message这个表格的所有字段
            // let sql = `select * from db_message where id='${id}'`;
            // let sql = `select * from db_message where id='${id}' and author= '${author}'`;
            let sql = `select * from db_message where id='${id}' or author= '${author}'`;
            // 参数： sql语句 
            db.query(sql).then( 
                rows=> {
                    //执行此处代码，表示获取了表格的数据
                    resolve(rows)
                },
                err=> {
                    //执行此处代码，表示获取数据失败
                    reject(err)
                }
            )
        })
    }

    // 关键字查询
    search(keyword){
        console.log({keyword})
        return new Promise((resolve, reject)=> {
            // 查询db_message这个表格的所有字段
            let sql = `select * from db_message where title like '%${keyword}%' or author like '%${keyword}%'`;
            // 参数： sql语句 
            db.query(sql).then( 
                rows=> {
                    //执行此处代码，表示获取了表格的数据
                    resolve(rows)
                },
                err=> {
                    //执行此处代码，表示获取数据失败
                    reject(err)
                }
            )
        })
    }

    // 添加数据
    add(title,content,author){
        return new Promise((resolve, reject)=> {
            // 查询db_message这个表格的所有字段
            let sql = `insert into db_message(title,content,author) values('${title}','${content}','${author}')`;
            // 参数： sql语句 
            db.query(sql).then( 
                rows=> {
                    //执行此处代码，表示获取了表格的数据
                    resolve(rows)
                },
                err=> {
                    //执行此处代码，表示获取数据失败
                    reject(err)
                }
            )
        })
    }

    // 修改数据
    update(id,new_title){
        return new Promise((resolve, reject)=> {
            // 根据id 修改 db_message这个表格title字段
            let sql = `update db_message set title= '${new_title}' where  id= '${id}'`;
            // 参数： sql语句 
            db.query(sql).then( 
                rows=> {
                    //执行此处代码，表示获取了表格的数据
                    resolve(rows)
                },
                err=> {
                    //执行此处代码，表示获取数据失败
                    reject(err)
                }
            )
        })
    }

    // 删除数据
    remove(id){
        return new Promise((resolve, reject)=> {
            // 根据id 删除db_message这个表格的相应的记录
            // let sql = `delete from db_message`
            let sql = `delete from db_message where id = '${id}'`
            // 参数： sql语句 
            db.query(sql).then( 
                (result) => {
                    if(result.affectedRows === 1){
                        resolve({
                            code: 200,
                            msg: '删除成功。',
                        })
                    }
                    else {
                        resolve({
                            code: -1,
                            msg: '删除失败。',
                        })
                    }
                },
                err=> {
                    //执行此处代码，表示获取数据失败
                    reject(err)
                }
            )
        })
    }

    // 统计数量
    total(){
        return new Promise((resolve, reject)=> {
            // 统计db_message这个表格的内容数量
            let sql = 'select count(*) as total from db_message'
            // 参数： sql语句 
            db.query(sql).then( 
                rows=> {
                    //执行此处代码，表示获取了表格的数据
                    resolve(rows)
                },
                err=> {
                    //执行此处代码，表示获取数据失败
                    reject(err)
                }
            )
        })
    }

    // 分页获取数据
    pagelist(page, pageSize){
        return new Promise((resolve, reject)=> {
            //获取分页数据
            let page_num= ((parseInt(page) - 1) * parseInt(pageSize))
            let page_size= (parseInt(pageSize))
            let sql =  `select * from db_message limit ${page_num} , ${page_size}`
            // 参数： sql语句 
            db.query(sql).then( 
                rows=> {
                    //执行此处代码，表示获取了表格的数据
                    resolve(rows)
                },
                err=> {
                    //执行此处代码，表示获取数据失败
                    reject(err)
                }
            )
        })
    }


}

// 曝光这个class的实例对象
module.exports = new Message();